//
//  TZL_PlusButton.m
//  MyTabbarDemo
//
//  Created by Yuki on 2021/10/11.
//

#import "TZL_PlusButton.h"
#import <objc/runtime.h>
#import "AppDelegate+ConfigTabbar.h"

@interface TZL_PlusButton ()<CYLPlusButtonSubclassing>

@end
static char clickPlusBtnBlock;

@implementation TZL_PlusButton

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self.titleLabel.textAlignment = NSTextAlignmentCenter;
        self.adjustsImageWhenHighlighted = NO;//长按不变
    }
    return self;
}

/// 实现 CYLPlusButtonSubclassing
+ (id)plusButton{
    TZL_PlusButton *btn = [TZL_PlusButton buttonWithType:UIButtonTypeCustom];
    [btn setImage:[UIImage imageNamed:@"tab_icon05"] forState:UIControlStateNormal];
    [btn setImage:[UIImage imageNamed:@"tab_icon05"] forState:UIControlStateHighlighted];
    [btn setImage:[UIImage imageNamed:@"tab_icon05"] forState:UIControlStateSelected];
    btn.frame = CGRectMake(0, 0, 55, 55);
    [btn addTarget:btn action:@selector(plusBtnClick) forControlEvents:UIControlEventTouchUpInside];
    return btn;
}



/// 这里实现消息转发，转发到tzl_tabbarController里面进行实现
/// @param sel 没有处理的方法
+ (BOOL)resolveInstanceMethod:(SEL)sel{
    if (sel == @selector(plusBtnClick)) {
        NSLog(@"%@ 来了",NSStringFromSelector(sel));

        IMP imp           = class_getMethodImplementation(AppDelegate.class, @selector(didClickPlusBtn));
        Method sayMMethod = class_getInstanceMethod(AppDelegate.class, @selector(didClickPlusBtn));
        
        const char *type  = method_getTypeEncoding(sayMMethod);
        return class_addMethod(self, sel, imp, type);
    }
    return [super resolveInstanceMethod:sel];
   
}


//凸起按钮的位置
+ (NSUInteger)indexOfPlusButtonInTabBar{
    return 2;
}

// 该方法是为了调整 PlusButton 中心点Y轴方向的位置，建议在按钮超出了 tabbar 的边界时实现该方法。
// 返回值是自定义按钮中心点 Y 轴方向的坐标除以 tabbar 的高度，小于 0.5 表示 PlusButton 偏上，大于 0.5 则表示偏下。
// PlusButtonCenterY = multiplierOfTabBarHeight * tabBarHeight + constantOfPlusButtonCenterYOffset;
+ (CGFloat)multiplierOfTabBarHeight:(CGFloat)tabBarHeight {
    return  0.3;
}

// constantOfPlusButtonCenterYOffset 大于 0 会向下偏移，小于 0 会向上偏移。
+ (CGFloat)constantOfPlusButtonCenterYOffsetForTabBarHeight:(CGFloat)tabBarHeight {
//    return (CYL_IS_IPHONE_X ? 10 : 10);
    return 10;
}



@end
